package com.qiku.utils;


import com.qiku.pojo.Resource;
import org.apache.commons.io.IOUtils;

import java.io.*;

public class FileUtils {

    /**
     * 将用户上传的文件复制到本地文件夹
     *
     * @param in       输入流，一般通过FileItem 对象获取
     * @param fileName 文件名
     * @param outUrl    输出文件到本地的路径
     * @return 返回一个 Resource 对象 其中 uploader_id ,  img_url属性为空
     */
    public Resource copyFile(InputStream in, String fileName, String outUrl) {
        try {
            String uuid = UUIDUtils.getUUID();
            //生成uuid
            String newFileName = uuid + "_" + fileName;
            //拼接使用uuid拼接文件名 保证文件名的唯一性
            outUrl = outUrl +"\\"+ newFileName;
            //拼接文件路径
            String type = fileName.substring(fileName.lastIndexOf(".")+1);
            //截取文件名获取文件类型
            FileOutputStream out = new FileOutputStream(outUrl);
            try {
                IOUtils.copy(in, out);
                in.close();
                out.close();
                Resource resource = new Resource();
                resource.setId(uuid);//设置资源id
                resource.setResource_name(fileName);//设置资源名

                resource.setUpload_date(DateUtils.getDateFormart());//设置上传时间
                resource.setType(type);//设置文件资源类型
                resource.setFile_url(outUrl);//设置资源位置
                resource.setIs_audit(1);//设置审核状态

                return resource;
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 删除服务器储存的本地文件
     * @param fileSrc 文件的绝对路径
     * @return 返回 boolean 类型 true 表示删除成功 false 表示删除失败
     */
    public boolean deleteFile(String fileSrc){
        File file = new File(fileSrc);
        boolean delete = file.delete();
        return delete;
    }

}
